package com.itheima.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 员工模块业务层实现
 */
@Service
@Slf4j
public class EmpServiceImpl implements EmpService {

    @Autowired
    private EmpMapper empMapper;

    @Override
    public PageBean<Emp> page(String name, Short gender, LocalDate begin, LocalDate end, Integer page, Integer pageSize) {
        // 计算索引  查询分页数据  查询总条数
        // 使用PageHelper插件一次性完成上述工作
        // 通过PageHelper.startPage，传入页码和页面大小，即可自动分页
        // 在该语句之后的第一条查询语句，将自动按照指定的参数分页
        PageHelper.startPage(page, pageSize);
        // PageHelper会自动把查询语句的返回值修改掉，改成Page类型
        // Page中就包含了分页相关的所有参数
        Page<Emp> pageList = empMapper.findByCondition(name, gender, begin, end);
        long total = pageList.getTotal();
        List<Emp> rows = pageList.getResult();

        PageBean<Emp> pageBean = new PageBean<>(total, rows);
        return pageBean;
    }

    @Override
    public void save(Emp emp) {
        log.info("员工模块，新增业务层");
        // 补全缺失的属性
        emp.setPassword("123456");
        emp.setCreateTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        // 调用mapper
        empMapper.insert(emp);
    }
}
